Linux 桌面环境(麒麟/统信) 下的良好兼容性表现,逐步成为信创协同办公系统中音视频能力模块的首选解决方案之一。 ,适配大屏Web或ARM嵌入式播放设备✅ 安全隔离场景部署于无公网访问环境的“可信办公区”或“涉密信息域”全链路离线运行,支持私有协议/内网RTMP服务/局域网自动发现✅ 国产信创平台在统信UOS、银河麒麟等国产操作系统下稳定运行适配国产 推流格式,支持边推边录实现远程视频讲解、培训演示、摄像同步,适配国产软硬件平台 RTMP/RTSP 播放支持低延迟 RTMP 和 RTSP 播放,解码后画面渲染至窗口或导出 YUV/RGB 回调实现多终端同步播放 以下为部分典型应用方向与实现要点:应用场景信创环境视频能力实现技术亮点✅ 政务办公终端统一通信麒麟/统信 + 内网服务器摄像头推流 + 局域网播放无公网依赖、内网封闭传输、兼容政务浏览器播放✅ 国企会议系统国产替代 UOS 桌面 + ARM终端屏幕采集 + RTMP分发 + 多平台播放本地编码推流,支持大屏/移动端多终端并发播放✅ 科研/高校远程报告答辩统信 Linux教师端摄像头推流 + 播放器嵌入低延迟互动演示
我们在实现Windows平台RTSP播放器或RTMP播放器的时候,需要考虑的点很多,比如多实例设计、多绘制模式兼容、软硬解码支持、快照、RTSP下TCP-UDP自动切换等,以下就其中几个方面,做个大概的探讨 is_gdi_render_ = true; playWnd.Visible = false; // 不支持D3D就让播放器吐出数据来 实时快照 实时快照功能不表,是一个好的RTSP播放器和RTMP播放器必备的功能,实时快照是把解码后的yuv数据重新编码成png,所以有一定的CPU消耗,不建议过于频繁操作,具体实现如下: set_capture_image_call_back_(result, image_name); } } 后续,我们将针对RTSP 和RTMP播放器设计过程中的其他点,做更进一步的探讨,谢谢大家的关注。
技术背景 无论是Windows平台还是Linux,多路播放诉求非常普遍,比如针对智慧工地、展馆、教育等宏观场景下的摄像头展示,关于RTSP或RTMP直播播放器开发需要注意的点,可参考之前博客,总的来说有以下一些点 H.265的播放和录制:除了H.264,还需要支持H.265,目前市面上的RTSP H.265摄像头越来越多,支持H.265的RTSP播放器迫在眉睫,此外,单纯的播放H.265还不够,还需要可以能把H.265 跨平台:一个好的播放器,跨平台(Windows/Android/iOS)很有必要,起码为了后续扩展性考虑,开发的时候,有这方面的考虑,目前大牛直播SDK的RTSP播放器,完美支持以上平台; 13. 异常状态处理:如播放的过程中,断网、网络抖动、来电话、切后台后返回等各种场景的处理。 代码实现 本文以大牛直播SDK(官方)的Linux平台为例,介绍下RTMP或RTSP流多路播放集成。 总结 多路RTMP或RTSP播放,涉及到性能和多路之间音视频同步、长时间播放稳定性等问题,Linux平台可参考的资料比较少,可选的方案比较少,感兴趣的可酌情参考。
好多开发者在做Windows平台特别是单屏多画面显示时,希望像监控摄像机一样,可以在播放画面添加OSD台标,以实现字符叠加效果,大多开发者可很轻松的实现以上效果,针对此,本文以大牛直播SDK (Github )的Windows平台demo为例,简单介绍下具体实现: Windows平台RTMP播放器、RTSP播放器C++ demo Windows平台C++的demo,以录像过程为例,动态在左上角显示个闪动的图标 data_.swap(buffer); } bitmap.UnlockBits(&locked_bitmapData); } return logo_image; } Windows平台RTMP 播放器、RTSP播放器C# demo Windows平台C#的demo,添加了“设置台标”选择框,在player窗口左上角显示“叠加字符展示”,具体内容、坐标可自定义,具体效果如下: 添加osd.png
很多开发者在开发RTSP或RTMP播放器的时候,不晓得哪些event回调事件是有意义的,针对此,我们以大牛直播SDK(github)的Android平台RTSP/RTMP直播播放端为例,简单介绍下常用的 流实时下载回调:显示播放rtsp或rtmp流时,实时流量,注意,这块最好是可设置回调时间间隔,防止不必要的资源消耗; 8. RTSP错误状态:如401鉴权不通过。 播放端连接中EVENT_DANIULIVE_ERC_PLAYER_CONNECTION_FAILED播放端连接失败EVENT_DANIULIVE_ERC_PLAYER_CONNECTED播放端连接成功EVENT_DANIULIVE_ERC_PLAYER_DISCONNECTED 会返回缓冲百分比)EVENT_DANIULIVE_ERC_PLAYER_STOP_BUFFERING停止缓冲数据EVENT_DANIULIVE_ERC_PLAYER_DOWNLOAD_SPEED返回当前 RTSP /RTMP 流 实时下载速度EVENT_DANIULIVE_ERC_PLAYER_RTSP_STATUS_CODERTSP 收到错误码,可能 是用户名、密码不对
,我们可能无法直接通过播放器控制音量,这时候,可以使用操作系统的全局音频控制来调节RTSP或RTMP播放器的音量。 当你调整系统音量时,所有正在播放音频的应用程序(包括 RTMP 播放器)的音量也会相应地改变。 利用播放模块自带的音量调节控制一个功能完善的RTSP或RTMP播放器,一般自带实时静音或实时音量调节,如果支持这种模式,就非常方便,可以只条件播放器的volume,不影响系统的音量。 、RTMP播放器,以下是其主要功能列表:播放协议支持: 广泛的流媒体协议:支持 RTMP、RTSP 等主流直播流媒体协议,可播放相应协议的直播视频流,适用于多种直播场景,如网络直播、监控直播等。 播放器如何设计音量调节接口 以大牛直播SDK的Windows平台RTSP、RTMP播放器为例,最早,我们设计的接口如下,直接通过实时静音来完成音量调节:/* * smart_player_sdk.cs
技术背景好多开发者拿到大牛直播SDK的Android平台RTSP、RTMP播放模块,基本上不看说明,测试后,就直接集成到自己系统了。 从高效率的角度,磨刀不误砍柴工,在模块集成之前,还是希望开发者能了解播放器集成的一些前置条件,少走弯路,尽快完成RTSP、RTMP低延迟播放能力构建。 |RTMP直播播放器Demo工程源码SmartPlayerV2\app\src\main\jniLibssmartavengine.jar和libSmartPlayer.soSmartPlayerV2\ RTMP/RTSP url开始播放SmartPlayerStartPlay开始播放RTSP/RTMP流停止播放SmartPlayerStopPlay停止播放RTSP/RTMP流关闭播放实例SmartPlayerClose 结束时必须调用close接口释放资源功能支持音频:AAC/Speex(RTMP)/PCMA/PCMU;视频:H.264、H.265;播放协议:RTSP|RTMP;支持纯音频、纯视频、音视频播放;支持多实例播放
统信UOS(统一操作系统): 由统信软件开发,支持多种国产CPU平台,提供专业版、家庭版、社区版和服务器操作系统。 国产操作系统下的RTSP播放器选择随着国产化操作系统不断完善,针对国产化操作系统下的RTSP播放器需求也越来越大,如何选择一个适用于自己研发场景的RTSP播放器呢? 性能:确保播放器能够在x86_64架构和arm64架构的Linux系统上稳定运行,并提供流畅的播放体验。兼容性:检查播放器是否支持你需要播放的RTSP流格式和编码方式。 开发:虽然GStreamer本身不是一个播放器,但你可以使用它构建自己的RTSP播放器,或者找到基于GStreamer的播放器应用。 国产操作系统的生态构建,也是当务之急,除了基础的RTSP播放器外,比如无纸化会议等场景下,还需要有采集音视频的RTMP推送、RTMP播放、轻量级RTSP服务等。
好多开发者在QT环境下实现RTMP或RTSP播放时,首先考虑到的是集成VLC,集成后,却发现VLC在延迟、断网重连、稳定性等各个方面不尽人意,无法满足上线环境需求。 本文以调用大牛直播SDK(官方)的Windows平台播放端SDK为例,介绍下如何在QT下实现低延迟的RTMP|RTSP播放器,废话不多说,先上图: QTPlayer.png 大牛直播SDK有MFC的demo time、RTSP的TCP-UDP模式,默认播放音量等,具体实现如下: bool player_wrapper::OpenPlayerHandle(const std::string& url, bool play->OnWindowSize(widgets.at(i)->width(), widgets.at(i)->height()); } } } 以上是QT环境下集成个低延迟的RTMP 、RTSP播放的基本流程,感兴趣的开发者可酌情参考。
技术背景大牛直播SDK自2015年发布RTSP、RTMP直播播放模块,迭代从未停止,SmartPlayer功能强大、性能强劲、高稳定、超低延迟、超低资源占用。 无需赘述,全自研内核,行业内一致认可的跨平台RTSP、RTMP直播播放器。本文以iOS平台为例,介绍下如何集成RTSP、RTMP播放模块。 (添加后台播放权限):功能支持iOS端,RTMP|RTSP直播播放,我们设计实现的功能如下:音频:AAC/PCMA/PCMU/SPEEX(RTMP);视频:H.264;播放协议:RTMP或RTSP;支持纯音频 url开始播放SmartPlayerStart开始播放RTSP/RTMP流停止播放SmartPlayerStop停止播放RTSP/RTMP流销毁播放实例SmartPlayerUnInitPlayer结束时必须调用 由于设备和系统比较单一,优先考虑硬解码,除了基础播放外,我们还实现了实时快照、实时录像、实时回调YUV数据、实时音量调节等,实际体验下来,iOS平台RTMP和RTSP,可以轻松毫秒级。
概述与优势1.1 SDK功能特性1.1.1 支持协议与格式 支持RTMP、RTSP协议,兼容H.265、H.264视频格式及AAC、PCMA等音频格式,满足多样化播放需求。 提供RTSP TCP/UDP模式设置及自动切换功能,适应不同网络环境,确保播放稳定性。 1.1.2 性能优化特性 内置低延迟模式,可将延迟控制在毫秒级别,满足实时性要求高的场景。 Unity播放器架构设计2.1 核心模块划分2.1.1 PlayerInstance模块 管理单个播放实例的生命周期,负责视频播放、录制及视频帧回调。 开启RTSP TCP/UDP自动切换功能,使播放器能根据网络状况自动选择最优传输模式。 /RTMP播放器,适用于VR、安防、直播等高实时性场景。
我们在Windows平台实现RTSP或者RTMP播放的时候,有个功能是绕不开的,那就是播放窗口全屏。 本文就以大牛直播SDK(官方)的Windows播放器为例,大概讲下大概实现: 全屏播放需要考虑的点不多: 第一:视频播放后,全屏的意义; 第二:全屏后,是否等比例显示,我们的设计原则是,之前等比例显示的
摘要本文详细介绍了在 Android 平台上集成 RTSP 和 RTMP 直播播放模块的技术背景、系统要求、准备工作、接口设计、功能支持以及接口调用流程。 三、准备工作在集成 RTSP/RTMP 播放模块之前,需要完成以下准备工作:1. 初始化接口 SmartPlayerOpen:初始化播放器,设置上下文信息,返回播放实例句柄。 SmartPlayerSetUrl:设置需要播放或录像的 RTMP/RTSP URL。 SmartPlayerStartPlay:开始播放 RTSP/RTMP 流。 五、功能支持 音频支持:AAC、Speex(RTMP)、PCMA、PCMU。 视频支持:H.264、H.265。 播放协议:RTSP、RTMP。 播放模式:支持纯音频、纯视频、音视频播放。
技术背景 大牛直播SDK自2015年发布RTSP、RTMP直播播放模块,迭代从未停止,SmartPlayer功能强大、性能强劲、高稳定、超低延迟、超低资源占用。 无需赘述,全自研内核,行业内一致认可的跨平台RTSP、RTMP直播播放器。本文以Android平台为例,介绍下如何集成RTSP、RTMP播放模块。 RTMP/RTSP url 开始播放 SmartPlayerStartPlay 开始播放RTSP/RTMP流 停止播放 SmartPlayerStopPlay 停止播放RTSP/RTMP流 关闭播放实例 接口调用详解 本文以大牛直播SDK Android平台SmartPlayerV2为例,播放之前,设置初始化参数配置(软解还是硬解、buffer time等)和需要播放的RTSP或RTMP URL,点开始播放即可 、RTMP播放模块,除了常规的直播播放外,也可能录像、或者实时拉流转发到RTMP服务器或轻量级RTSP服务,所以,和录像、转发相关的播放端基础参数配置,放到InitAndSetConfig()实现: private
国产操作系统|Linux下RTMP|RTSP直播播放 在发布国产操作系统|Linux平台的RTMP|RTSP直播播放SDK之前,大牛直播SDK(官方)的直播播放SDK无需赘述,采用自研内核框架 buffer time设定、网络自动重连等,RTMP支持扩展H265播放, RTSP也支持H265播放。 播放器接口和调用都比较简单,集成复杂度低,且不依赖于QT。 相关DEMO 大牛直播SDK发布的Linux平台播放器SDK支持多实例播放,以单个窗体播放为例,相关代码如下: const char* player_url_ = "rtsp://admin 、RTSP直播播放,经实际测试,延迟和Windows平台一样,毫秒级,随着国产操作系统在无纸化同屏等行业的推进,越来越多的场景需要这样一款稳定性高延迟低的RTMP|RTSP播放器,本文抛砖引玉,感兴趣的开发者可酌情参考
我们需要怎样的直播播放器?很多开发者在跟我聊天的时候,经常问我,为什么一个RTMP或RTSP播放器,你们需要设计那么多的接口,真的有必要吗? 带着这样的疑惑,我们今天聊聊Android平台RTMP、RTSP播放器常规功能,如软硬解码设置、实时音量调节、实时快照、实时录像、视频view翻转和旋转、画面填充模式设定、解码后YUV、RGB数据回调等 :图片延迟延迟延迟RTMP或RTSP直播播放器,特别是在一些交互场景下,对延迟要求近乎苛刻,所以,毫秒级的延迟,是一个直播播放器聊下去的基础,200-400ms的整体时延,是大家比较期望的,是的,你没看错 或RTMP播放器来说,非常有价值,用户感兴趣的帧数据,可以直接写png文件保存下来,后续还可以针对保存下来的png数据,做二次分析。 或RTSP播放器,还需要支持的客制化功能有支持回调H.264/H.265/AAC数据,或回到解码后的YUV或RGB数据,设置播放缓冲、设置快速播放、设置音频输出类型等,一个通用的RTSP、RTMP播放器
因此,构建在国产操作系统与 ARM64 芯片上的 RTMP/RTSP 低延迟播放器技术,不仅是技术适配,更是保障国家数字底座安全可信的关键一环。 因此,大牛直播SDK选择将 流媒体播放能力率先迁移至国产 OS + ARM64 体系,正是面对现实痛点做出的关键突破: 工程上最复杂 行业上最需要 落地上最有价值尤其是对 RTSP / RTMP 的深度优化 ➡ 已在统信、麒麟等国产系统环境完成适配测试3)面向专网业务的网络稳定性 支持 RTSP / RTMP 两大行业常用协议 网络异常时支持自动恢复 可调缓冲时长提高弱网环境容忍度 追帧策略可增强画面连续性 五、多路 RTSP/RTMP 播放器 Demo:架构与源码说明为了验证上述能力在国产 ARM64 平台上的稳定性,我们实现了一个 多实例低延迟播放器 Demo,支持: 多路流同时播放 自适应窗口布局 ▶ 未来能力演进方向方向说明Wayland 渲染支持适配国产 OS 图形栈演进趋势播放性能提升解码+渲染路径进一步优化业务协议扩展根据行业需求增强 RTSP/RTMP 能力安全性加强面向专网与政企环境增强加密与权限控制整体路线
RTSP|RTMP播放器模块是大牛直播SDK的SmartMediaKit下非常优异的子产品,功能丰富、性能优异,毫秒级超低延迟,支持Windows、Linux(x86_64|aarch64架构)、Android )/PCMA/PCMU;视频:H.264、H.265;播放协议:RTSP|RTMP;支持纯音频、纯视频、音视频播放;支持多实例播放;支持软解码,特定机型硬解码;支持RTSP TCP、UDP模式设置;支持 RTSP TCP、UDP模式自动切换;支持RTSP超时时间设置,单位:秒;支持buffer时间设置,单位:毫秒;支持超低延迟模式;支持断网自动重连、视频追赶,支持buffer状态等回调;支持视频view 一个好的RTMP或RTSP播放器,不仅是需要功能完善,还需要有非常优异的性能,特别是多实例播放,资源占有也是考量的一个重要因素,其次,直播特别是和操控相关的场景,都需要极致的低延迟才行,真是应了那句话, 做播放器容易,做个好的播放器,真的太难了!
技术背景在这篇blog之前,我提到了wpf下播放RTMP和RTSP渲染的两种方式,一种是通过控件模式,另外一种是直接原生RTSP、RTMP播放模块,回调rgb,然后在wpf下渲染,本文就两种方式做个说明 OpenPlayerHandle(url, is_rtsp_tcp_mode, is_mute, is_hardware_decorder)) return false; player2_.StartPlay("rtsp://admin:admin123456@192.168.0.121:554/cam/realmonitor? player4_.StartPlay("rtsp://admin:admin123456@192.168.0.121:554/cam/realmonitor? 或RTMP播放,以上两种模式都可以尝试看,都不麻烦,如果想更灵活,可以采用回调rgb然后自己绘制的模式,如果想更省事,那么直接picturebox控件handle设置下去,底层自己绘制,以上是大概的实现逻辑
在发布国产操作系统|Linux平台的RTMP|RTSP直播播放SDK之前,大牛直播SDK在Windows、Android、iOS平台已经有了非常成熟的技术积累,功能齐全、稳定性高、超低延迟、超低资源占用 国产操作系统和Linux上的RTMP|RTSP直播播放模块,视频绘制使用XLib相关库实现, 音频输出使用PulseAudio和Alsa Lib,除了常规功能如实时静音、快照、buffer time设定 、网络自动重连等,RTMP支持扩展H265播放, RTSP也支持H265播放。 Linux原生的RTSP、RTMP播放模块这里我们不做赘述,本文主要讲的是如何在Linux平台构建Unity下的RTSP和RTMP低延迟直播播放。 、RTSP直播播放器大概的实现参考,随着国产操作系统的推进,Linux下RTMP、RTSP高质量的播放器需求越来越大,Unity下,可以实现和Windows、Android等平台统一开发管理,非常方便。